CSSã°ãªãããã©ãã¯ãµã€ãºã®è£éã§ãåçãã€æµåçãªãŠã§ãã¬ã€ã¢ãŠããå®çŸããŸããããã¹ã ãŒãºãªãã©ã³ãžã·ã§ã³ãäœæããåœéçãªãŠãŒã¶ãŒäœéšãåäžããããã¯ããã¯ãåŠã³ãŸãã
CSSã°ãªãããã©ãã¯ãµã€ãºã®è£éïŒã°ããŒãã«ãŠã§ãåãã®ã¹ã ãŒãºãªã¬ã€ã¢ãŠããã©ã³ãžã·ã§ã³ãå®çŸãã
çŸä»£ã®ãŠã§ãéçºã®åçãªç¶æ³ã«ãããŠãæ©èœçã§ããã ãã§ãªããçŸçã«ãåªããé«åºŠã«ã¬ã¹ãã³ã·ããªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæããããšã¯æãéèŠã§ããã³ã³ãã³ããé²åããç»é¢ãµã€ãºã倿§åãããŠãŒã¶ãŒã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãå±éããã«ã€ããŠãã¬ã€ã¢ãŠãã¯ãã°ãã°é©å¿ããå¿ èŠããããŸããCSSã°ãªããã¯ã¬ã€ã¢ãŠããæ§é åããããã®æ¯é¡ã®ãªã宣èšçãªãã¯ãŒãæäŸããŸããã1ã€ã®äžè¬çãªèª²é¡ãçããŸããç°ãªãã°ãªããæ§æéããããããããããžã£ã³ããçªç¶ã®å€åãªãã«ãã©ã®ããã«ã¹ã ãŒãºã«ç§»è¡ãããããšããããšã§ãã
ããã§ç»å Žããã®ã CSSã°ãªãããã©ãã¯ãµã€ãºã®è£é ã§ãããã®é«åºŠãªæŠå¿µã¯ãåäžã®CSSããããã£ã§ã¯ãããŸããããã°ãªãããã©ãã¯ïŒåãšè¡ïŒã®ãµã€ãºãã·ãŒã ã¬ã¹ã«ã¢ãã¡ãŒã·ã§ã³ãããããã«æ¡çšã§ããæŽç·Žããããã¯ããã¯ãæããŸããããã«ãæ¡å€§ã»çž®å°ããããã·ã¥ããŒãããŠãŒã¶ãŒå ¥åã«åºã¥ããŠèªèº«ãåé 眮ããã®ã£ã©ãªãŒããã¥ãŒããŒãã®å€åã«å¿ããŠåªé ã«ã¬ã€ã¢ãŠããã·ããããããã²ãŒã·ã§ã³ããŒãæ³åããŠã¿ãŠãã ãããã°ãªããã§ãããã®ãã¹ã ãŒãºãªã¬ã€ã¢ãŠããã©ã³ãžã·ã§ã³ããå®çŸããããšã¯ãåãªãæ©èœçãªãã®ããçã«æ¥œãããã®ãžãšãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãé«ããç¹ã«é«å質ãªããžã¿ã«ã€ã³ã¿ã©ã¯ã·ã§ã³ã«æ £ããã°ããŒãã«ãªèŠèŽè ã«ãšã£ãŠéèŠã§ãã
ãã®å æ¬çãªã¬ã€ãã§ã¯ãCSSã°ãªãããã©ãã¯ãµã€ãºã®ã¢ãã¡ãŒã·ã§ã³ã®è€éãªåŽé¢ã«æ·±ãæãäžããŸããåºæ¬çãªæŠå¿µãæ¢ããäžå¿ãšãªã課é¡ãç¹å®ããçŸä»£ã®CSSãšJavaScriptã䜿çšããå®çšçã§å®è¡å¯èœãªãã¯ããã¯ã玹ä»ããŸããæçµçã«ã¯ãäžçäžã®ãŠãŒã¶ãŒãé äºãããæµåçã§é©å¿æ§ã®é«ãé åçãªãŠã§ãã¬ã€ã¢ãŠããæ§ç¯ããããã®ç¥èãç¿åŸã§ããã§ãããã
CSSã°ãªããã®åºç€ãçè§£ãã
è£éã®æ ã«åºãåã«ãCSSã°ãªããã®åºæ¬çãªååããã£ãããšçè§£ããŠããããšãäžå¯æ¬ ã§ããCSSã°ãªããã¬ã€ã¢ãŠãã¯2次å ã·ã¹ãã ã§ãããåãšè¡ã®äž¡æ¹ãåæã«åŠçã§ãããããèŠçŽ ã®é 眮ãšãµã€ãºèšå®ã«ãããŠçµ¶å€§ãªãã¯ãŒãçºæ®ããŸãã
宣èšçã¬ã€ã¢ãŠãã®å
display: grid;: ã°ãªããã³ã³ããã«èŠçŽ ã倿ããåºçºç¹ã§ããgrid-template-columnsãšgrid-template-rows: ãããã®ããããã£ã¯ãã°ãªããã®æ§é ãå®çŸ©ããäžå¿ã§ããã°ãªããã©ã€ã³ãšãã©ãã¯ã®æ°ããµã€ãºãååãæå®ããŸããfråäœ: ã°ãªããã³ã³ããå ã®å©çšå¯èœãªã¹ããŒã¹ã®å²åã衚ããã¬ãã·ãã«ãªåäœã§ããããã¯ããã©ãã¯ãèªåçã«ãµã€ãºã調æŽã§ãããããã¬ã¹ãã³ã·ããã¶ã€ã³ã«ãšã£ãŠéåžžã«éèŠã§ããäŸãã°ãgrid-template-columns: 1fr 2fr 1fr;ã¯ãäžå€®ã®åãä»ã®2ã€ã®åã®2åã®å¹ ã«ãªã3ã€ã®åãäœæããŸããminmax()颿°: ãã©ãã¯ãæå°ãµã€ãºãšæå€§ãµã€ãºã®éã§æé·ããããšãå¯èœã«ããã¬ã¹ãã³ã·ãæ§ã«å¯Ÿãããããªãå¶åŸ¡ãæäŸããŸããäŸãã°ãgrid-template-columns: repeat(auto-fit, minmax(200px, 1fr));ã¯ãå¯èœãªéãå€ãã®200pxã®åããã£ãããããååãæ®ãã®ã¹ããŒã¹ã®çããå²åãå ããã¬ã¹ãã³ã·ããªã°ãªãããäœæããŸãã- æé»çã°ãªãããšæç€ºçã°ãªãã: æç€ºçã«å®çŸ©ããããã©ãã¯ïŒ
grid-template-ããããã£ã䜿çšïŒãšãã¢ã€ãã ãæç€ºçã°ãªããã®å€ã«é 眮ãããå ŽåããŸãã¯grid-auto-rows/grid-auto-columnsã䜿çšããå Žåã«èªåçã«çæããããã©ãã¯ã§ãã
CSSã°ãªããã®åŒ·ã¿ã¯ãæ¯èŒçå°ãªãã³ãŒãã§è€éãªã¬ã€ã¢ãŠãã管çã§ããããšã«ãããŸãããããããŠãŒã¶ãŒããã¿ã³ãã¯ãªãã¯ããããèŠçŽ ã«ãããŒãããããã©ãŠã¶ã®ãµã€ãºã倿Žããããšãã£ããŠãŒã¶ãŒã®åå¿ã«å¿ããŠããããã®ã¬ã€ã¢ãŠããåçã«å€æŽããå¿
èŠãããå Žåãåã«1ã€ã®grid-template-columnsã®å€ãå¥ã®å€ã«äº€æããã ãã§ã¯ãå³åº§ã«ããã°ãã°ããã¡ãªãèŠèŠçãªãžã£ã³ããçºçããŸãããããç§ãã¡ã®äžå¿çãªèª²é¡ãžãšã€ãªãããŸãã
åçã¬ã€ã¢ãŠãã®èª²é¡
ããªãã¯ããªãgrid-template-columnsãgrid-template-rowsã«CSSã®transitionãé©çšã§ããªãã®ã ããïŒããšçåã«æããããããŸãããtransitionãwidthãheightãopacityãtransformãªã©ã®ä»ã®CSSããããã£ã®ã¢ãã¡ãŒã·ã§ã³ã«åºã䜿çšãããŠããããšãèãããšãããã¯èªç¶ãªä»®å®ã§ããããããgrid-template-columnsãgrid-template-rowsãçŽæ¥ã¢ãã¡ãŒã·ã§ã³ãããããšã¯ãæ ¹æ¬çãªçç±ããCSSãã©ã³ãžã·ã§ã³ã«ãã£ãŠãã€ãã£ãã«ãµããŒããããŠããŸããããããã®ããããã£ã¯ãåäžã®è£éå¯èœãªæ°å€ã§ã¯ãªããå€ã®ãªã¹ããå®çŸ©ããããã§ãã
ã°ãªãããã©ãã¯å€æŽã®ã颿£çããªæ§è³ª
grid-template-columnsã1fr 1fr 1frãã2fr 1fr 1frã«å€æŽãããšããã©ãŠã¶ã¯ããã2ã€ã®ç°ãªãã¬ã€ã¢ãŠãå®çŸ©éã®é¢æ£çã§ç¬éçãªåãæ¿ããšèŠãªããŸãããã©ãã¯å®çŸ©ãªã¹ãå
šäœã®ã³ã³ããã¹ãå
ã§1frãš2frã®éããã©ãŠã¶ããã¹ã ãŒãºã«ãè£éããæ¬è³ªçãªæ¹æ³ã¯ãããŸããããã©ãŠã¶ã¯ãæ¬è³ªçã«ã¹ããŒã¹åºåãã®å€ã®æååã§ãããç°ãªãåäœïŒpxãemã%ãfrãautoãminmax()ãªã©ïŒãå«ãå¯èœæ§ã®ããããããã£ã®äžéç¶æ
ãäœæããæ¹æ³ãç¥ããŸããã
ãã®å¶éã¯ããããã®ããããã£ãçŽæ¥ãã©ã³ãžã·ã§ã³ããããšãããšãã¬ã€ã¢ãŠããçªç¶ãã¹ããããããããã«åãæ¿ããããŠãŒã¶ãŒãæ··ä¹±ãããã¢ããªã±ãŒã·ã§ã³ã®ç¥èŠå質ãæãªãå¯èœæ§ãããããšãæå³ããŸããèŠèŠçãªæçããšçŽæçãªã€ã³ã¿ã©ã¯ã·ã§ã³ãèšèªçãŸãã¯æåçãªã®ã£ãããåããéµãšãªãã°ããŒãã«ãªèŠèŽè ã«ãšã£ãŠããã®ãããªçªç¶ã®å€åã¯ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«ãšã£ãŠç¹ã«æå®³ãšãªãå¯èœæ§ããããŸãã
ãããã£ãŠãåŸ ã¡æãŸããŠãããã¹ã ãŒãºãªã¬ã€ã¢ãŠããã©ã³ãžã·ã§ã³ããå®çŸããããã«ã¯ã宣èšçãªã°ãªããããããã£ãçŽæ¥ã¢ãã¡ãŒã·ã§ã³ããããšããã®ã§ã¯ãªããã°ãªãããã©ãã¯ãµã€ãºã*æ§æãã*åºç€ãšãªãå€ãã¢ãã¡ãŒã·ã§ã³ã§ãããããæŽç·Žããããã¯ããã¯ãæ¡çšããå¿ èŠããããŸãã
ã°ãªãããã©ãã¯ãµã€ãºè£éã®å°å ¥
ãããã£ãŠãã°ãªãããã©ãã¯ãµã€ãºã®è£éã¯æ°ããCSSããããã£ã§ã¯ãªããgrid-template-columnsãgrid-template-rowsãã¢ãã¡ãŒã·ã§ã³åããŠãããã®ãããªé¯èŠãçã¿åºãããã®äžé£ã®æŠç¥ãæãå
æ¬çãªçšèªã§ããäžå¿çãªèãæ¹ã¯ããããã®ããããã£ã®è€éã§é¢æ£çãªæ§è³ªããããåçŽã§è£éå¯èœãªã³ã³ããŒãã³ããéåžžã¯æ°å€ã«åè§£ããããããã¹ã ãŒãºã«ãã©ã³ãžã·ã§ã³ã§ããããšã§ãã
æã广çãªã¢ãããŒãã¯ããã°ãã°æœè±¡åã®å±€ãå°å
¥ããããšã§ããgrid-template-columnsããããã£ãçŽæ¥æäœãã代ããã«ãã¢ãã¡ãŒã·ã§ã³å¯èœãªå€ã䜿çšããŠãã©ãã¯ãµã€ãºãå®çŸ©ã§ããŸããããã§ãCSSã«ã¹ã¿ã ããããã£ïŒå€æ°ïŒãšcalc()ã®ãããªCSS颿°ã®å·§åŠãªäœ¿çšãäžå¯æ¬ ãšãªããããè€éã§ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãããã¢ãã¡ãŒã·ã§ã³ã®ããã«ã¯JavaScriptãšçµã¿åãããŠäœ¿çšãããããšããããããŸãã
grid-template-columnså
ã®å€ïŒäŸïŒfrå€ããŸãã¯ãã¯ã»ã«å€ïŒãåçãã€ã¢ãã¡ãŒã·ã§ã³å¯èœã«ããããšã§ããããã®å€ãæéãšãšãã«å€åããã«ã€ããŠããã©ãŠã¶ãã°ãªããã®äžéç¶æ
ãã¬ã³ããªã³ã°ã§ããããã«ãªããŸããããã«ãããèŠçŽ ãã°ãªããã¬ã€ã¢ãŠãå
ã§åªé
ã«æ¡å€§ãçž®å°ããŸãã¯åé
眮ããããç§ãã¡ãæãã¹ã ãŒãºã§æµåçãªåããçãŸããŸãããã®ç¹çްãªã¢ãããŒãã«ãããã¬ã€ã¢ãŠããã¬ã¹ãã³ã·ããªã ãã§ãªããçŸåŠçã«ãé©å¿ããäžçäžã®å€æ§ãªããã€ã¹ããŠãŒã¶ãŒã®å¥œã¿ã«ããã£ãŠäžè²«ããæŽç·ŽãããäœéšãæäŸããŸãã
ã¹ã ãŒãºãªãã©ã³ãžã·ã§ã³ãå®çŸããããã®ãã¯ããã¯
CSSã°ãªãããã©ãã¯ãµã€ãºãã¢ãã¡ãŒã·ã§ã³åããããã®æã广çã§åºãæ¡çšãããŠãããã¯ããã¯ããå®çšçãªäŸã亀ããŠæ¢ã£ãŠã¿ãŸãããã
æ¹æ³1ïŒCSSã«ã¹ã¿ã ããããã£ïŒå€æ°ïŒãšcalc()ã«ããã¢ãã¡ãŒã·ã§ã³å¯èœãªå€ã®å©çš
ããã¯ãã°ãªãããã©ãã¯ãµã€ãºã®è£éãå®çŸããäžã§ãæããšã¬ã¬ã³ãã§ãCSSãã€ãã£ãããªæ¹æ³ãšèšããã§ãããããã®æŠç¥ã«ã¯ãCSSã«ã¹ã¿ã ããããã£ïŒå€æ°ïŒã䜿çšããŠãã©ãã¯ãµã€ãºãå®çŸ©ããæ°å€å€ãä¿æãããããã®ã«ã¹ã¿ã ããããã£ããã©ã³ãžã·ã§ã³ãããããšãå«ãŸããŸããæ°å€è¡šçŸã®ã«ã¹ã¿ã ããããã£ã倿Žããããšãææ°ã®ãã©ãŠã¶ã¯ãã°ãã°ãããè£éã§ããŸãã
ä»çµã¿ïŒ
- ã«ãŒããŸãã¯ã³ã³ããã¬ãã«ã§CSSã«ã¹ã¿ã ããããã£ïŒäŸïŒ
--col-flex-factorã--row-heightïŒãå®çŸ©ããŸãã - ãããã®ã«ã¹ã¿ã ããããã£ãã
calc()ã®ãããªé¢æ°ãfrã®ãããªåäœãšçµã¿åãããŠãgrid-template-columnsãŸãã¯grid-template-rowså ã§äœ¿çšããŸãã - ã«ã¹ã¿ã ããããã£èªäœã«
transitionãé©çšããŸããã«ã¹ã¿ã ããããã£ã®å€ã倿ŽããããšïŒäŸïŒãããŒç¶æ ãã¯ã©ã¹ã®åãæ¿ãæïŒããã©ãŠã¶ã¯æ°å€ãã¹ã ãŒãºã«è£éããŸãã grid-template-columnsããããã£ã*è£éäžã®*å€ãæ¶è²»ãããããã°ãªããã¯ã¹ã ãŒãºã«åã¬ã³ããªã³ã°ãããŸãã
äŸïŒãããŒæã®ã°ãªããåã®æ¡åŒµ
3ã€ã®åãæã€ã°ãªãããèããŸããã°ãªããã³ã³ããã«ãããŒãããšãæåã®åã1frãã2frã«æ¡åŒµããä»ã®åãæ¯äŸããŠèª¿æŽãããããã«ããããšããŸãã
.grid-container {
display: grid;
--col1-flex: 1; /* Initial custom property for first column's flex factor */
grid-template-columns: var(--col1-flex)fr 1fr 1fr; /* Use variable in grid definition */
gap: 10px;
width: 100%;
height: 200px;
transition: --col1-flex 0.4s ease-in-out; /* Transition the custom property */
}
.grid-container:hover {
--col1-flex: 2; /* Change the custom property on hover */
}
.grid-item {
background-color: #6a82fb;
color: white;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.2em;
border-radius: 5px;
}
<div class="grid-container">
<div class="grid-item">Item 1</div>
<div class="grid-item">Item 2</div>
<div class="grid-item">Item 3</div>
</div>
ãã®äŸã§ã¯ã.grid-containerã«ãããŒãããšã--col1-flexã«ã¹ã¿ã ããããã£ã1ãã2ãžãšã¹ã ãŒãºã«ãã©ã³ãžã·ã§ã³ããŸããgrid-template-columnsããã®å€æ°ãvar(--col1-flex)frãšããŠäœ¿çšãããããæåã®åã®å®å¹ãã©ãã¯ãµã€ãºãè£éãããã¹ã ãŒãºãªæ¡åŒµãçããŸãããã®ãã¯ããã¯ã¯éåžžã«åŒ·åã§ãå®è£
ãæ¯èŒçç°¡åã§ãã
é·æïŒ
- çŽç²ãªCSSãœãªã¥ãŒã·ã§ã³: åºæ¬çãªãã©ã³ãžã·ã§ã³ã«JavaScriptã¯ã»ãšãã©ããããã¯ãŸã£ããå¿ èŠãªããããã¯ãªãŒã³ãªã³ãŒãã«ã€ãªãããŸãã
- ããã©ãŒãã³ã¹: ãã©ãŠã¶ã®ã¬ã³ããªã³ã°ãšã³ãžã³ã«ãã£ãŠãã€ãã£ãã«åŠçãããããããã°ãã°è¯å¥œãªããã©ãŒãã³ã¹ããããããŸãã
- ä¿å®æ§: ã«ã¹ã¿ã ããããã£ã¯èªã¿ããã管çãããããç¹ã«ãã¶ã€ã³ã·ã¹ãã ã«ãããŠããã§ãã
- 宣èšç: CSSã°ãªããã®å®£èšçãªæ§è³ªãšããåèŽããŸãã
çæïŒ
- è£éã¿ã€ãã®å¶é: ã«ã¹ã¿ã ããããã£ã®æ°å€ã¯ãã°ãã°è£éãããŸãããè€éãªå€ãå€ã®ãªã¹ãã¯ããã§ãªãå ŽåããããŸãã
- ã«ã¹ã¿ã ããããã£ãã©ã³ãžã·ã§ã³ã®ãã©ãŠã¶ãµããŒã: åºããµããŒããããŠããŸãããç¹å®ã®ã±ãŒã¹ãéåžžã«å€ããã©ãŠã¶ã§ã¯äžæŽåãçããå¯èœæ§ããããŸãã
- è€æ°ã®çžäºäŸåçãªå€æŽã«å¯Ÿããè€éã: çŽç²ãªCSSã§ãè€æ°ã®åå¥ã®ãã©ãã¯ãã©ã³ãžã·ã§ã³ãåæã«èª¿æŽããã®ã¯æ±ãã«ãããªãå¯èœæ§ããããŸãã
æ¹æ³2ïŒJavaScriptã«ããã¢ãã¡ãŒã·ã§ã³ïŒWeb Animations APIãŸãã¯ã©ã€ãã©ãªïŒ
ããè€éã§åçããããã¯é«åºŠã«ã€ã³ã¿ã©ã¯ãã£ããªã°ãªãããã©ã³ãžã·ã§ã³ã«ã¯ãJavaScriptãæ¯é¡ãªãå¶åŸ¡ãæäŸããŸãããã®æ¹æ³ã¯ã倿§ãªãŠãŒã¶ãŒã€ãã³ããããŒã¿å€æŽã«ãã£ãŠãã©ã³ãžã·ã§ã³ãããªã¬ãŒãããå Žåããã«ã¹ã¿ã ããããã£äžã®çŽç²ãªCSSãã©ã³ãžã·ã§ã³ã§ã¯å®¹æã«éæã§ããªãç¹å®ã®ã¿ã€ãã³ã°ãã€ãŒãžã³ã°ãå¿ èŠãªå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã
ä»çµã¿ïŒ
- ã°ãªãããã©ãã¯ãµã€ãºãå®çŸ©ããæ°å€ïŒäŸïŒ
fråäœãpxå€ïŒãç¹å®ããŸãã - æ¹æ³1ãšåæ§ã«ããããã®å€ãCSSã«ã¹ã¿ã ããããã£ã«ä¿åããŸãã
- JavaScriptã䜿çšããŠããããã®CSSã«ã¹ã¿ã ããããã£ã®å€ãæéã®çµéãšãšãã«åçã«å€æŽããŸããããã¯ããã€ãã£ããã©ãŠã¶ã¢ãã¡ãŒã·ã§ã³çšã®Web Animations APIïŒWAAPIïŒãŸãã¯GreenSockïŒGSAPïŒã®ãããªã¢ãã¡ãŒã·ã§ã³ã©ã€ãã©ãªãä»ããŠè¡ãããšãã§ããŸãã
- ãã©ãŠã¶ã¯ãã¹ã ãŒãºã«å€åããã«ã¹ã¿ã ããããã£ã®å€ã§ã°ãªãããåã¬ã³ããªã³ã°ããŸãã
äŸïŒJavaScriptã«ããåçãªåãµã€ãºèšå®
çééã®é 眮ãããæåã®åãæ¯é çãªã¬ã€ã¢ãŠããžãšãã¹ã ãŒãºãªãã©ã³ãžã·ã§ã³ã§åã®ãµã€ãºãåãæ¿ãããã¿ã³ãäœæããŸãããã
.grid-container {
display: grid;
--col1-flex: 1; /* Initial */
--col2-flex: 1;
--col3-flex: 1;
grid-template-columns: var(--col1-flex)fr var(--col2-flex)fr var(--col3-flex)fr;
gap: 10px;
width: 100%;
height: 200px;
border: 1px solid #ccc;
border-radius: 5px;
}
.grid-item {
background-color: #6a82fb;
color: white;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.2em;
border-radius: 5px;
}
.control-buttons {
margin-top: 20px;
text-align: center;
}
button {
padding: 10px 20px;
font-size: 1em;
cursor: pointer;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 4px;
transition: background-color 0.3s ease;
}
button:hover {
background-color: #45a049;
}
<div class="grid-container" id="myGrid">
<div class="grid-item">Item 1</div>
<div class="grid-item">Item 2</div>
<div class="grid-item">Item 3</div>
</div>
<div class="control-buttons">
<button id="toggleGridBtn">Toggle Layout</button>
</div>
const grid = document.getElementById('myGrid');
const toggleBtn = document.getElementById('toggleGridBtn');
let isExpanded = false;
toggleBtn.addEventListener('click', () => {
if (isExpanded) {
// Shrink back to equal distribution
grid.animate(
[
{ '--col1-flex': 2, '--col2-flex': 0.5, '--col3-flex': 0.5 },
{ '--col1-flex': 1, '--col2-flex': 1, '--col3-flex': 1 }
],
{
duration: 500,
easing: 'ease-in-out',
fill: 'forwards'
}
);
} else {
// Expand first column
grid.animate(
[
{ '--col1-flex': 1, '--col2-flex': 1, '--col3-flex': 1 },
{ '--col1-flex': 2, '--col2-flex': 0.5, '--col3-flex': 0.5 }
],
{
duration: 500,
easing: 'ease-in-out',
fill: 'forwards'
}
);
}
isExpanded = !isExpanded;
});
ãã®äŸã§ã¯ããã€ãã£ãã®Web Animations API (WAAPI)ã䜿çšããŠãã«ã¹ã¿ã ããããã£ïŒ--col1-flexãªã©ïŒãã¢ãã¡ãŒã·ã§ã³åããŠããŸããWAAPIã¯ãJavaScriptã§ã¢ãã¡ãŒã·ã§ã³ã«å¯ŸããŠåŒ·åã§é«æ§èœãªããã现ããå¶åŸ¡ãæäŸãããµãŒãããŒãã£ã©ã€ãã©ãªã«é Œãããšãªãè€éãªã€ã³ã¿ã©ã¯ã·ã§ã³ãå®çŸããåªããéžæè¢ãšãªããŸããfill: 'forwards'ã¯ãã¢ãã¡ãŒã·ã§ã³å®äºåŸããã®ç¶æ
ãä¿æãããããã«ããŸãã
é·æïŒ
- 究極ã®å¶åŸ¡: æ£ç¢ºãªã¿ã€ãã³ã°ãè€éãªã€ãŒãžã³ã°é¢æ°ãé£ç¶ã¢ãã¡ãŒã·ã§ã³ãåçãªç¶æ 管çã
- æè»æ§: ã¢ããªã±ãŒã·ã§ã³ããžãã¯ãšã·ãŒã ã¬ã¹ã«çµ±åãããŠãŒã¶ãŒå ¥åãããŒã¿å€æŽãAPIå¿çã«å¯Ÿå¿ããŸãã
- è±å¯ãªã¢ãã¡ãŒã·ã§ã³ã©ã€ãã©ãª: GSAPã®ãããªããŒã«ã¯ãé«åºŠãªæ©èœãå¹ åºããã©ãŠã¶äºææ§ãããã©ãŒãã³ã¹æé©åãæäŸããŸãã
- ãªãŒã±ã¹ãã¬ãŒã·ã§ã³: ç°ãªãèŠçŽ éã§è€æ°ã®çžäºäŸåçãªã¢ãã¡ãŒã·ã§ã³ãåæãããããšã容æã«ãªããŸãã
çæïŒ
- è€éæ§ã®å¢å : JavaScriptãå¿ èŠãšããã³ãŒãããŒã¹ã®ãµã€ãºãšè€éããå¢ãå¯èœæ§ããããŸãã
- åŠç¿æ²ç·: WAAPIãã¢ãã¡ãŒã·ã§ã³ã©ã€ãã©ãªã«ã¯ãç¬èªã®APIãåŠã¶å¿ èŠããããŸãã
- æœåšçãªããã©ãŒãã³ã¹ãªãŒããŒããã: æé©åãããŠããªãå Žåãé床ã®DOMæäœãè€éãªèšç®ã¯ãç¹ã«äžéšã®ã°ããŒãã«å°åã§äžè¬çãªäœæ§èœããã€ã¹äžã§ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
æ¹æ³3ïŒè€éãªã·ãŒã±ã³ã¹ã«ã«ã¹ã¿ã ããããã£ãš@keyframesã䜿çšãã
æ¹æ³1ãåºç€ãšããŠãkeyframesã¯ããè€éãªå€æ®µéã¢ãã¡ãŒã·ã§ã³ãçŽç²ã«CSSã§å®çŸ©ããæ¹æ³ãæäŸããŸããã«ã¹ã¿ã ããããã£ãšçµã¿åãããããšã§ãJavaScriptãªãã§ã®ã·ãŒã±ã³ã¹åãããã°ãªãããã©ãã¯è£éã«å¯Ÿããå
ç¢ãªãœãªã¥ãŒã·ã§ã³ãšãªããããŒãã£ã³ã°ã¢ãã¡ãŒã·ã§ã³ã段éçãªãã©ã³ãžã·ã§ã³ãã€ã³ã¿ã©ã¯ãã£ããªã³ã³ããŒãã³ãã®ç¶æ
ãªã©ã®ãã¿ãŒã³ã«æé©ã§ãã
ä»çµã¿ïŒ
@keyframesã«ãŒã«ãå®çŸ©ããç°ãªã段éïŒäŸïŒ0%ã50%ã100%ïŒã§1ã€ä»¥äžã®CSSã«ã¹ã¿ã ããããã£ã®å€ã倿ŽããŸãã- ãã®
animationãã°ãªããã³ã³ããã«é©çšããŸãã grid-template-columnsãŸãã¯grid-template-rowsããããã£ã¯ã¢ãã¡ãŒã·ã§ã³ããã«ã¹ã¿ã ããããã£ãæ¶è²»ããã¹ã ãŒãºãªããŒãã¬ãŒã ã°ãªãããã©ã³ãžã·ã§ã³ããããããŸãã
äŸïŒã°ãªãããµã€ãºå€æŽã®ã¢ãã¡ãŒã·ã§ã³ã«ãŒã
ãŠã§ããµã€ãã®äžéšãããããç¹é補åã®ã«ã«ãŒã»ã«ãããŒã¿èŠèŠåããã·ã¥ããŒããæ³åããŠãã ãããã°ãªããèŠçŽ ãé£ç¶çãªã«ãŒãã§åŸ®åŠã«ãµã€ãºå€æŽãããåé 眮ãããããšã§æ³šæãåŒããŸãã
@keyframes pulseGridColumns {
0%, 100% {
--col1-size: 1;
--col2-size: 1;
--col3-size: 1;
}
50% {
--col1-size: 1.5;
--col2-size: 0.75;
--col3-size: 0.75;
}
}
.animated-grid-container {
display: grid;
--col1-size: 1; /* Initial state */
--col2-size: 1;
--col3-size: 1;
grid-template-columns: var(--col1-size)fr var(--col2-size)fr var(--col3-size)fr;
gap: 10px;
width: 100%;
height: 250px;
animation: pulseGridColumns 4s infinite ease-in-out; /* Apply keyframe animation */
border: 1px solid #ddd;
border-radius: 8px;
padding: 15px;
box-shadow: 0 4px 12px rgba(0,0,0,0.05);
}
.animated-grid-item {
background-color: #f0f4ff;
color: #333;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.1em;
border-radius: 4px;
border: 1px solid #cfd8ff;
padding: 10px;
text-align: center;
}
<div class="animated-grid-container">
<div class="animated-grid-item"><strong>Dynamic Content A</strong></div>
<div class="animated-grid-item"><em>Interactive Element B</em></div>
<div class="animated-grid-item">Important Info C</div>
</div>
ããã§ã¯ãpulseGridColumnsããŒãã¬ãŒã ã¢ãã¡ãŒã·ã§ã³ãã«ã¹ã¿ã ããããã£ã®frå€ãç¶ç¶çã«å€æŽãããããã°ãªããåã®ã¹ã ãŒãºãªãµã€ãºå€æŽãé§åããŸããããã¯ãJavaScriptã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãªãã«èŠèŠçãªé
åãé«ãããé
åçã§èªåå®è¡ãããã¢ãã¡ãŒã·ã§ã³ãäœæããã®ã«æé©ã§ãã
é·æïŒ
- è€éãªCSSã¢ãã¡ãŒã·ã§ã³: çŽç²ã«CSSã ãã§ã倿®µéãã«ãŒãããã粟巧ãªã¢ãã¡ãŒã·ã§ã³ãå¯èœã«ããŸãã
- ããã©ãŒãã³ã¹:
transitionãšåæ§ã«ããã©ãŠã¶ã«ãã£ãŠäžè¬çã«æé©åãããŠããŸãã - 宣èšçã§åå©çšå¯èœ: ããŒãã¬ãŒã ã¢ãã¡ãŒã·ã§ã³ã¯äžåºŠå®çŸ©ããã°ãè€æ°ã®èŠçŽ ãç¶æ ã«é©çšã§ããŸãã
çæïŒ
- ã€ã³ã¿ã©ã¯ã·ã§ã³ããžãã¯ã®å¶é: è€éãªãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ããªã¢ã«ã¿ã€ã ã®ããŒã¿å€æŽã«æ£ç¢ºã«åå¿ããå¿ èŠãããã¢ãã¡ãŒã·ã§ã³ã«ã¯é©ããŠããŸããã
- CSSã®è€éã: éåžžã«è€éãªã·ãŒã±ã³ã¹ã®å Žåã
@keyframesã«ãŒã«ãé·ããªãã管çãé£ãããªãå¯èœæ§ããããŸãã - åçã®çŽæ¥å¶åŸ¡äžå¯: JSã¢ãã¡ãŒã·ã§ã³ãšã¯ç°ãªããCSSã¢ãã¡ãŒã·ã§ã³ã®äžæåæ¢ãéåçãã·ãŒã¯ã«ã¯è¿œå ã®JavaScriptãŸãã¯å·§åŠãªCSSããªãã¯ãå¿ èŠã§ãã
é«åºŠãªèæ ®äºé ãšãã¹ããã©ã¯ãã£ã¹
ã¹ã ãŒãºãªã°ãªãããã©ã³ãžã·ã§ã³ã®å®è£ ã¯ãåã«ãã¯ããã¯ãéžæããã ãã«ãšã©ãŸããŸãããæ éãªé©çšã¯ããããã®ã¢ãã¡ãŒã·ã§ã³ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæãªãããšãªãããããåäžãããããšãä¿èšŒããŸããããã¯ãããã€ã¹ã®æ©èœãã€ã³ã¿ãŒãããé床ãã¢ã¯ã»ã·ããªãã£ã®ããŒãºãç°ãªãã°ããŒãã«ãªèŠèŽè ã«ãšã£ãŠç¹ã«éèŠã§ãã
ããã©ãŒãã³ã¹ã®æé©å
- CSSã¢ãã¡ãŒã·ã§ã³ãåªå
ãã: å¯èœãªéããåçŽãªã¢ãã¡ãŒã·ã§ã³ã«ã¯JavaScriptãããçŽç²ãªCSSãã©ã³ãžã·ã§ã³ã
@keyframesãåªå ããŠãã ããããã©ãŠã¶ã¯CSSã¢ãã¡ãŒã·ã§ã³ãå¹ççã«åŠçããããã«é«åºŠã«æé©åãããŠããããã°ãã°GPUã«åŠçãå§è²ããŸãã - ã¢ã€ãã ã¢ãã¡ãŒã·ã§ã³ã«ã¯
transformãšopacityã䜿çšãã: ã°ãªãã*ãã©ãã¯*ãµã€ãºã«ã€ããŠè©±ããŠããŸãããåã ã®ã°ãªãã*ã¢ã€ãã *ã®ã¢ãã¡ãŒã·ã§ã³ïŒäŸïŒãã®äœçœ®ãã¹ã±ãŒã«ãäžéæåºŠïŒã¯ãã¬ã€ã¢ãŠãã®åèšç®ãããªã¬ãŒããªããããå¯èœã§ããã°transformãšopacityã䜿çšããæ¹ãäžè¬çã«ããã©ãŒãã³ã¹ãé«ãããšãèŠããŠãããŠãã ãããã°ãªãããã©ãã¯ã®ãµã€ãºã倿Žããããšãã¬ã€ã¢ãŠãèšç®ã¯é¿ããããŸããããä»ã®é«ã³ã¹ããªã¢ãã¡ãŒã·ã§ã³ãæå°éã«æããããšã圹ç«ã¡ãŸãã will-changeããããã£: 倿Žãããå¯èœæ§ã®ããããããã£ã«ã€ããŠãã©ãŠã¶ã«éç¥ããŸããäŸãã°ãwill-change: grid-template-columns;ãŸãã¯will-change: --col-flex;ã¯ãã¬ã³ããªã³ã°ãæé©åããããã®ãã³ãããã©ãŠã¶ã«äžããããšãã§ããŸããã䜿ãããããšãªãœãŒã¹ãæ¶è²»ããå¯èœæ§ããããããæ éã«äœ¿çšããå¿ èŠããããŸãã- JavaScriptã¢ãã¡ãŒã·ã§ã³ã®ãããŠã³ã¹/ã¹ãããã«:
resizeãscrollãªã©ã®ã€ãã³ãã«çµã³ã€ãããã©ã³ãžã·ã§ã³ã§JavaScriptã䜿çšããå Žåãã¢ãã¡ãŒã·ã§ã³èšç®ã®é »åºŠãå¶éããããã«ãããŠã³ã¹ãŸãã¯ã¹ãããã«ãå®è£ ããããã©ãŒãã³ã¹ã®ããã«ããã¯ãé²ããŸãã
ã¢ã¯ã»ã·ããªãã£ã®èæ ®äºé
ã¢ãã¡ãŒã·ã§ã³ã¯ã¢ã¯ã»ã·ããªãã£ã«ãšã£ãŠäž¡åã®å£ãšãªãããšããããŸãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãåäžãããäžæ¹ã§ãé床ãŸãã¯é«éãªåãã¯ãç¹å®ã®å¹³è¡¡æ©èœé害ãã¢ãŒã·ã§ã³ã«ææãªå人ã«ãšã£ãŠäžå¿«æã倱èŠåœèãããã«ã¯çºäœãåŒãèµ·ããå¯èœæ§ããããŸããã°ããŒãã«ã³ãã¥ããã£ãšããŠãç§ãã¡ã¯å æ¬çãªãã¶ã€ã³ãè¡ãå¿ èŠããããŸãã
prefers-reduced-motionã¡ãã£ã¢ã¯ãšãª: åžžã«ãŠãŒã¶ãŒã®å¥œã¿ãå°éããŠãã ãããprefers-reduced-motionã¡ãã£ã¢ã¯ãšãªã䜿çšããŠãã¢ãŒã·ã§ã³ã奜ãŸãªããŠãŒã¶ãŒã«ãããç©ãããªããŸãã¯éçãªäœéšãæäŸããŸãã
@media (prefers-reduced-motion: reduce) {
.grid-container {
transition: none !important;
animation: none !important;
/* Set final state directly or a static state */
--col1-flex: 1 !important;
/* ... ensure a readable, functional layout */
}
}
- æç¢ºãªç®ç: ã¢ãã¡ãŒã·ã§ã³ãåãªãè£ é£Ÿçã§æ°ãæ£ãããã®ã§ã¯ãªããæç¢ºãªç®çïŒäŸïŒç¶æ ã®å€åã瀺ããæ³šæãåŒãïŒãæããããšã確èªããŠãã ããã
- æå³ã®ããã³ã³ãã³ã: ã¢ãã¡ãŒã·ã§ã³äžãããã¹ãŠã®ã³ã³ãã³ããèªã¿ããããã€ã³ã¿ã©ã¯ãã£ãã§ããããšã確èªããŠãã ããã
ãŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ïŒUXïŒã®åäž
- é©åãªã¿ã€ãã³ã°ãšã€ãŒãžã³ã°: ãã©ã³ãžã·ã§ã³ã®æéãšã€ãŒãžã³ã°é¢æ°ã¯ããã®ãã¹ã ãŒãºããã®æãæ¹ã«å€§ãã圱é¿ããŸããéããããšãžã£ã³ãã«ãªããé
ããããšããããããŸãã
ease-in-outãcubic-bezier()ã®ãããªäžè¬çãªã€ãŒãžã³ã°é¢æ°ã¯ããªãã¢ããã奜ãŸããããšãå€ãã§ãã - æèçé¢é£æ§: ã¢ãã¡ãŒã·ã§ã³ã¯ãŠãŒã¶ãŒã®ã¯ãŒã¯ãããŒãè£å®ãããã®ã§ããã¹ãã§ãã軜埮ãªã¬ã€ã¢ãŠã倿Žã«ã¯åŸ®åŠãªãã©ã³ãžã·ã§ã³ãçæ³çã§ãããäž»èŠãªã³ã³ãã³ãã®ã·ããã«ã¯ããé¡èãªã¢ãã¡ãŒã·ã§ã³ãé©åãããããŸããã
- ã°ããŒãã«ã³ã³ãã³ãã®é©å¿æ§: åœéåãããã¢ããªã±ãŒã·ã§ã³ã§ãããã¹ãã®é·ãã®ã°ãã€ãïŒäŸïŒãã€ãèªã®åèªã¯è±èªããé·ãããšãå€ããã¢ãžã¢èšèªã¯éåžžã«ã³ã³ãã¯ãã§ãããªã©ïŒãã°ãªããã¢ã€ãã ãã²ããŠã¯ã°ãªãããã©ãã¯ãµã€ãºã«ã©ã®ããã«åœ±é¿ããããèæ
®ããŠãã ããã
minmax()ãauto-fit/auto-fillã䜿çšããŠã倿§ãªã³ã³ãã³ãã«å¯Ÿå¿ããã¬ã€ã¢ãŠãã厩ãããããã±ãŒã«ããšã«åºç¯ãªã¢ãã¡ãŒã·ã§ã³èª¿æŽãå¿ èŠã«ãªã£ããããªãããã«ãæè»æ§ãèæ ®ããŠèšèšããŠãã ããã - ãã£ãŒãããã¯ãšäºæž¬å¯èœæ§: ã¹ã ãŒãºãªãã©ã³ãžã·ã§ã³ã¯èŠèŠçãªãã£ãŒãããã¯ãæäŸããã€ã³ã¿ãŒãã§ãŒã¹ãããå¿çæ§ãé«ãäºæž¬å¯èœã«æããããŸãããŠãŒã¶ãŒã¯èŠçŽ ãã©ããžè¡ãã®ããäºæž¬ã§ããŸãã
ã¯ãã¹ãã©ãŠã¶äºææ§
CSSã°ãªãããšCSSã«ã¹ã¿ã ããããã£ã«å¯Ÿããææ°ã®ãã©ãŠã¶ãµããŒãã¯ãChromeãFirefoxãSafariãEdgeãOperaãšãã£ãã°ããŒãã«ãªãŒããŒãå«ãããããé¢ã§åªããŠããŸããããã¯ãããã§è°è«ããããã¯ããã¯ããçŸåšã®ããŒãžã§ã³ã«å¯ŸããŠåºç¯ãªãã¬ãã£ãã¯ã¹ãããªãã£ã«ãªãã§äžè¬çã«ååã«ãµããŒããããŠããããšãæå³ããŸãã
- ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®åºæº: åžžã«ã¿ãŒã²ãããªãŒãã£ãšã³ã¹ã®äžè¬çãªãã©ãŠã¶å©çšç¶æ³ãææ¡ããŠãã ãããç¹å®ã®å°åã§ã®ãšã³ã¿ãŒãã©ã€ãºã¢ããªã±ãŒã·ã§ã³ã®å Žåãå€ããã©ãŠã¶ããŒãžã§ã³ããŸã æ®åããŠããå¯èœæ§ããããããæ
éãªã¢ãããŒãããã©ãŒã«ããã¯ã¡ã«ããºã ïŒäŸïŒã¢ãã¡ãŒã·ã§ã³ã®è©³çްã«ã¯ããŸãé¢ä¿ãããŸãããã
floatãã©ãŒã«ããã¯ä»ãã®gridã䜿çšãããªã©ïŒãå¿ èŠã«ãªãããšããããŸãã - ãã¹ã: ç°ãªããã©ãŠã¶ãããã€ã¹ãç¹ã«æ§èœã®äœãã¢ãã€ã«ããã€ã¹ã§ã°ãªããã¢ãã¡ãŒã·ã§ã³ã培åºçã«ãã¹ããããã¹ãŠã®ãŠãŒã¶ãŒã«äžè²«ãã髿§èœãªäœéšãä¿èšŒããŠãã ããã
ãã¶ã€ã³ã·ã¹ãã ãšã®çµ±å
çµç¹ãã°ããŒãã«éçºããŒã ã«ãšã£ãŠããããã®ã¢ãã¡ãŒã·ã§ã³ãã¯ããã¯ããã¶ã€ã³ã·ã¹ãã ã«çµ±åããããšã¯ãäžè²«æ§ãšã¹ã±ãŒã©ããªãã£ã®ããã«äžå¯æ¬ ã§ãã
- å®çŸ©ããã倿°: ã¢ãã¡ãŒã·ã§ã³ã®æéãã€ãŒãžã³ã°æ²ç·ãããã³äžè¬çãªãã©ãã¯ãµã€ãºå€ïŒäŸïŒ
--grid-transition-durationã--grid-easeïŒã®ããã®ã«ã¹ã¿ã ããããã£ã®ã»ããã確ç«ããŸãã - ã³ã³ããŒãã³ãããŒã¹ã®ã¢ãããŒã: ã°ãªããã¬ã€ã¢ãŠãã®ãã¿ãŒã³ãšãã®é¢é£ã¢ãã¡ãŒã·ã§ã³ãåå©çšå¯èœãªã³ã³ããŒãã³ãå ã«ã«ãã»ã«åããå°ççãªå Žæã«é¢ä¿ãªããããŸããŸãªãããžã§ã¯ããããŒã å šäœã§äžè²«ããŠç°¡åã«å®è£ ã§ããããã«ããŸãã
- ããã¥ã¡ã³ã: ãã¶ã€ã³ã·ã¹ãã ã®ããã¥ã¡ã³ãå ã§ãã°ãªãããã©ãã¯ãµã€ãºã®è£éã®å®è£ æ¹æ³ãšã«ã¹ã¿ãã€ãºæ¹æ³ã«ã€ããŠãã¢ã¯ã»ã·ããªãã£ã®èæ ®äºé ãå«ããæç¢ºãªã¬ã€ãã©ã€ã³ãšäŸãæäŸããŸãã
ã°ããŒãã«ãªåœ±é¿ãšãŠãŒã¹ã±ãŒã¹
ã¹ã ãŒãºã«é·ç§»ããã°ãªããã¬ã€ã¢ãŠããäœæããèœåã¯ãç¹ã«åœéçã§å€æ§ãªèŠèŽè åãã«ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããéã«ããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã«å€§ããªåœ±é¿ãäžããŸããã¬ã€ã¢ãŠããåçã§æµåçãªãã®ã«ããããšã§ãéçºè ã¯çã«æ®éçãªã€ã³ã¿ãŒãã§ãŒã¹ãäœãåºãããšãã§ããŸãã
- 倿§ãªããã€ã¹ã«ãããã¬ã¹ãã³ã·ãã¬ã€ã¢ãŠã: éèã»ã³ã¿ãŒã®å€§åãã¹ã¯ãããã¢ãã¿ãŒãããæ°èåžå Žã®ã³ã³ãã¯ããªã¢ãã€ã«ããã€ã¹ãŸã§ãæµåçãªã°ãªãããã©ã³ãžã·ã§ã³ã¯ãç»é¢ã®å¯žæ³ã«é¢ããããã¢ããªã±ãŒã·ã§ã³ãåªé ã«é©å¿ããæé©ãªè¡šç€ºäœéšãæäŸããããšãä¿èšŒããŸãã
- å€èšèªãµã€ãã®ããã®åçãªã³ã³ãã³ã調æŽ: ãŠãŒã¶ãŒãèšèªãåãæ¿ãããšããããã¹ãã®é·ãã¯åçã«ç°ãªãããšããããŸããã¹ã ãŒãºã«ã¢ãã¡ãŒã·ã§ã³ããã°ãªããã¯ãããèšèªïŒäŸïŒãã€ãèªãã¢ã©ãã¢èªïŒã®é·ãåèªãåé·ãªèª¬æãšãããç°¡æœãªä»£æ¿ïŒäŸïŒè±èªãäžåœèªïŒãšã®éã§ãåå¹ ãè¡é«ããåªé ã«èª¿æŽããã¬ã€ã¢ãŠãã®åŽ©å£ãé²ããèªã¿ããããåäžãããŸãã
- ã€ã³ã¿ã©ã¯ãã£ããªããã·ã¥ããŒããšããŒã¿ããžã¥ã¢ã©ã€ãŒãŒã·ã§ã³: ãŠãŒã¶ãŒãç¹å®ã®ããŒã¿ããã«ãå±éããŠè©³çްãèŠãããããŒã¿ããã£ã«ã¿ãªã³ã°ããããããšãä»ã®ããã«ãåªé ã«çž®å°ãŸãã¯åé 眮ãããããžãã¹ã€ã³ããªãžã§ã³ã¹ããã·ã¥ããŒããæ³åããŠã¿ãŠãã ããããã®æµåæ§ã¯ãããŒã¿æ¢çŽ¢ãšçè§£ãåäžãããè€éãªæ å ±ãäžçäžã®å°éå®¶ãã¢ã¯ã»ã¹ã§ããããã«ããŸãã
- Eã³ããŒã¹è£œåãã£ã¹ãã¬ã€: 補åããã£ã«ã¿ãªã³ã°ããããã«ããŽãªããœãŒããããã補åã®è©³çްã衚瀺ãããããéãã¢ã€ãã ã®ã°ãªãããã¹ã ãŒãºã«é·ç§»ããããé åçã§ãããããããªãã·ã§ããã³ã°äœéšãçã¿åºããŸããããã¯ãè£œåæ å ±ã®å¯åºŠãèŠèŠçå奜ãç°ãªãå¯èœæ§ã®ããã°ããŒãã«ãªEã³ããŒã¹ãã©ãããã©ãŒã ã«ãšã£ãŠç¹ã«æçã§ãã
- ããŒããã©ãªãªããã³ã®ã£ã©ãªãŒãŠã§ããµã€ã: äžçäžã®ã¢ãŒãã£ã¹ãããã¶ã€ããŒãåçå®¶ã¯ãã«ããŽãªã§ãã£ã«ã¿ãªã³ã°ããããããã¥ãŒããŒãã倿Žãããããããšãã«çŸããåé 眮ãããåçãªã®ã£ã©ãªãŒã§äœåãå±ç€ºããèŠèŠçãªèª¿åãšãŠãŒã¶ãŒãšã³ã²ãŒãžã¡ã³ããç¶æã§ããŸãã
- æè²ããã³ãã¥ãŒã¹ãã©ãããã©ãŒã : æ°ããèšäºãåŠç¿ã¢ãžã¥ãŒã«ãèªã¿èŸŒãŸãããããŠãŒã¶ãŒãã³ã³ãã³ãèšå®ã調æŽãããããã«ã€ããŠãã°ãªããã¬ã€ã¢ãŠãã埮åŠã«ã·ããããæ å ±ãæŽçãããé åçãªæ¹æ³ã§æç€ºããããšã§ãç¥èã®åžåãä¿é²ããŸãã
- ãŠãŒã¶ãŒãªã³ããŒãã£ã³ã°ãšã¬ã€ãä»ããã¢ãŒ: ã¹ã ãŒãºãªã°ãªãããã©ã³ãžã·ã§ã³ã¯ããŠãŒã¶ãŒãã¢ããªã±ãŒã·ã§ã³ã®æ©èœãéããŠèªå°ããé²è¡ã«å¿ããŠç°ãªãã»ã¯ã·ã§ã³ãã¹ãããã匷調ããããšã§ãããããæè¡çèæ¯ãæã€ãŠãŒã¶ãŒã«ãšã£ãŠçŽæçã§å§åçã§ãªããªã³ããŒãã£ã³ã°ããã»ã¹ãäœæããããã«äœ¿çšã§ããŸãã
CSSã°ãªãããã©ãã¯ãµã€ãºè£éãæèçã«é©çšããããšã§ãéçºè ã¯éçãŸãã¯çªç¶ã®ã¬ã€ã¢ãŠã倿Žãè¶ è¶ããäžçäžã®ããããå Žæã®ãŠãŒã¶ãŒã«é¿ããé«åºŠã«æŽç·Žããããé©å¿æ§ããããé åçãªããžã¿ã«ãšã¯ã¹ããªãšã³ã¹ãæäŸã§ããŸãã
çµè«
CSSã°ãªããã¯ãæ¯é¡ãªããã¯ãŒãšæè»æ§ãæäŸãããŠã§ãã¬ã€ã¢ãŠããžã®ã¢ãããŒãæ¹æ³ã«é©åœããããããŸãããããããçã«åçã§é åçãªãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœæããããã®ãã®çã®å¯èœæ§ã¯ãã°ãªãããã©ãã¯ãµã€ãºã®è£éã®æè¡ãç¿åŸãããšãã«éè±ããŸãããã©ã³ãžã·ã§ã³ãããŒãã¬ãŒã ã¢ãã¡ãŒã·ã§ã³ããŸãã¯JavaScriptïŒWeb Animations APIãªã©ïŒãšçµã¿åãããŠCSSã«ã¹ã¿ã ããããã£ãæŠç¥çã«äœ¿çšããããšã§ãéçºè ã¯çªç¶ã®ã¬ã€ã¢ãŠãã·ãããæµåçã§ã¹ã ãŒãºã§ãçŸçã«ãæºè¶³ã®ãããã©ã³ãžã·ã§ã³ã«å€ããããšãã§ããŸãã
ãããã®ãã¯ããã¯ã¯åãªãèŠèŠçãªè¯ãããã ãã§ã¯ãããŸããããããã¯ãã°ããŒãã«ãªèŠèŽè ã«ãšã£ãŠçŽæçã§é«æ§èœããããŠã¢ã¯ã»ã·ãã«ãªäœéšãäœãåºãããã®åºç€ãšãªããŸããã¢ãŒã·ã§ã³ã«å¯ŸãããŠãŒã¶ãŒã®å¥œã¿ãå°éãã倿§ãªããã€ã¹å šäœã§ããã©ãŒãã³ã¹ãæé©åããæåçããã³èšèªçãªã³ã³ãã³ãã®ããªãšãŒã·ã§ã³ãèæ ®ããŠèšèšããããšã§ãã¢ã¯ã»ã¹ãããå Žæãæ¹æ³ã«é¢ããããçŸããæ©èœçã«é©å¿ãããŠã§ãã¬ã€ã¢ãŠããæ§ç¯ã§ããŸãã
CSSã°ãªããã«ãããã¹ã ãŒãºãªã¬ã€ã¢ãŠããã©ã³ãžã·ã§ã³ã®åãæŽ»çšããŸãããããããã®æ¹æ³ã詊ããŠãã¬ã¹ãã³ã·ããã¶ã€ã³ã®éçãæŒãåºããåœéçãªããžã¿ã«ã©ã³ãã¹ã±ãŒãã§çã«éç«ã€åªãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ãæäŸããããã«ããŠã§ããããžã§ã¯ããåäžãããŠãã ããããŠã§ãã¯åçã§ãããããªãã®ã¬ã€ã¢ãŠããããããã¹ãã§ãïŒ